home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / messages.d < prev    next >
Text File  |  1997-10-26  |  11KB  |  297 lines

  1. DEFINITION MODULE Messages;
  2.  
  3. FROM SYSTEM IMPORT ADDRESS;
  4.  
  5. IMPORT data, CatTypes;
  6.  
  7. (* Erst mal ein paar Strings *)
  8.  
  9. TYPE    distTextArray   = ARRAY [data.dNone..data.dNet] OF ARRAY [0..10] OF CHAR;
  10.  
  11. CONST
  12.         msgDistr        = 'Distr.: '+0C;
  13.         msgDNone        = 'keine'+0C;
  14.         msgDLokal       = '(lokal)'+0C;
  15.         msgDMausNet     = '(MausNet)'+0C;
  16.         msgDNet         = '(Net)'+0C;
  17.         msgDistribs     = distTextArray{msgDNone, msgDLokal, msgDMausNet, msgDNet};
  18.  
  19. TYPE    
  20.         msgNumberSet = SET OF [0..999];
  21.  
  22.         MessageType = (comment, answer, mail, private, groupcomment, copyOwn, copyOther, forward, persanswer);
  23.         lineType    = (dateL, receiverL, orgGroupL, groupL, refIdL, topicL, rIdL, rNameL);
  24.  
  25.         shortInfo = RECORD 
  26.                       msgType     : MessageType;
  27.                       number      : INTEGER;
  28.                       copyCount   : INTEGER;
  29.                       refNum      : INTEGER;
  30.                       sendMsg     : BOOLEAN;
  31.                       toDelete    : BOOLEAN;
  32.                       dist        : data.tDistribution;
  33.                       size        : LONGCARD;
  34.                       noRefLine   : BOOLEAN;
  35.                       cDate       : CARDINAL;
  36.                       cTime       : CARDINAL;
  37.                       orgDist     : data.tDistribution;
  38.                       reserved1,
  39.                       reserved2   : LONGCARD; 
  40.                     END;
  41.                 
  42.         msgInfo = RECORD
  43.                     CASE : INTEGER OF
  44.                      1 : info : shortInfo;|
  45.                      2 : msgType     : MessageType;
  46.                          number      : INTEGER;
  47.                          copyCount   : INTEGER;
  48.                          refNum      : INTEGER;
  49.                          sendMsg     : BOOLEAN; 
  50.                          toDelete    : BOOLEAN;
  51.                          dist        : data.tDistribution;
  52.                          size        : LONGCARD; 
  53.                          noRefLine   : BOOLEAN;
  54.                          cDate       : CARDINAL;
  55.                          cTime       : CARDINAL;
  56.                          orgDist     : data.tDistribution;
  57.                          reserved1,
  58.                          reserved2   : LONGCARD; |
  59.                     END;
  60.                     new     : BOOLEAN;
  61.                     hdrRead : BOOLEAN;
  62.                     isSend  : BOOLEAN;
  63.                     selected: BOOLEAN;
  64.                     CASE : CARDINAL OF
  65.                      0 : strings     : ARRAY [dateL..rNameL] OF CatTypes.Str1023Ptr; |
  66.                      1 : date        : CatTypes.Str1023Ptr;
  67.                          receiver    : CatTypes.Str1023Ptr;
  68.                          orgGroup    : CatTypes.Str1023Ptr;
  69.                          group       : CatTypes.Str1023Ptr;
  70.                          refId       : CatTypes.Str1023Ptr;
  71.                          topic       : CatTypes.Str1023Ptr;
  72.                          rId         : CatTypes.Str1023Ptr;
  73.                          realName    : CatTypes.Str1023Ptr;
  74.                     END;
  75.                   END;
  76.         
  77.         msgInfoPtr = POINTER TO msgInfo;
  78.  
  79.         msgArrayPtr = POINTER TO ARRAY [0..999] OF msgInfo;
  80.         diskArrayPtr = POINTER TO ARRAY [0..999] OF shortInfo;
  81.  
  82.  
  83. VAR     msgArray : msgArrayPtr;
  84.         messages : INTEGER;
  85.         maxMess  : INTEGER;
  86.         usedNumbers: msgNumberSet;
  87.  
  88. PROCEDURE Number2Name (number : CARDINAL; VAR str : ARRAY OF CHAR); 
  89. (* Wandelt eine Msgnummer in einen Nachrichtendateinamen um
  90.  *)
  91.  
  92. PROCEDURE FileSize (REF path, name : ARRAY OF CHAR; VAR date, time: CARDINAL) : LONGCARD;
  93. (* Holt die Dateigr”že und Erstellungsdatum und -uhrzeit einer Datei 
  94.  *)
  95.  
  96. PROCEDURE FindMessage (number : INTEGER): INTEGER; 
  97. (* Liefert den internen Index der Nachricht mit der Nummer number
  98.  *)
  99.  
  100. PROCEDURE NewMessage(REF Gruppe, Wegen : ARRAY OF CHAR);
  101. (* Eine neue Message anlegen und danach editieren *)
  102.  
  103. PROCEDURE NewKomMessage(REF fromGroup, Group, Wegen, RefId, txt, mId, To, RealName: ARRAY OF CHAR);
  104. (* Einen Kommentar zu einer Gruppennachricht in
  105.  * eine andere Gruppe schicken.
  106.  *)
  107.  
  108. PROCEDURE NewAnsMessage(REF an, realName, fromGroup, Wegen, RefId, txt, mId : ARRAY OF CHAR);
  109. (* Einen Kommentar zu einer Gruppennachricht an jemand 
  110.  * pers”nlich schicken.
  111.  *)
  112.  
  113. PROCEDURE NewRegMsg(VAR number: INTEGER; VAR txtName : ARRAY OF CHAR);
  114. (* Eine Registrierungsnachricht wird erzeugt
  115.  * Der Name der Textdatei wird zurckgegeben
  116.  *)
  117.  
  118. PROCEDURE UpdateFileSize (number: INTEGER);
  119. (* Erzwingt ein Update der Nachrichtengr”že der Nachricht mit
  120.  * der Nummer number
  121.  * Wird nach NewRegMsg ben”tigt.
  122.  *)
  123.  
  124. PROCEDURE NewPersMsg (REF Empfaenger, RealName, Wegen : ARRAY OF CHAR);
  125. (* Eine neue pers”nliche Nachricht an jemand schicken 
  126.  *)
  127.  
  128. PROCEDURE NewKom(REF Nr, Wegen, gruppe, mId, To, RealName : ARRAY OF CHAR; 
  129.                  oldDist: data.tDistribution);
  130. (* Einen Kommentar erzeugen 
  131.  *)
  132.  
  133. PROCEDURE NewAnswer(REF Nr, Wegen, an, mId, RealName : ARRAY OF CHAR);
  134. (* Eine Antwort erzeugen 
  135.  *)
  136.  
  137. PROCEDURE SendState(REF Nr : ARRAY OF CHAR; NewState : CHAR);
  138. (* Erstellt eine Statusnachricht fr die pers”nlichen Nachrichten,
  139.  * die man empfangen hat
  140.  *)
  141.  
  142. PROCEDURE CopyOrForwardMessage (REF Nr, To, RealName, comment : ARRAY OF CHAR; copy : BOOLEAN);
  143. (* Erstellt eine Statusmeldung fr eine Kopie oder eine 
  144.  * Weiterleitung
  145.  *)
  146.  
  147. PROCEDURE CopyOwnMessage (REF MailId, To, RealName, Comment : ARRAY OF CHAR; minNum: INTEGER);
  148. (* Erstellt eine Kopie einer eigenen Nachricht
  149.  *)
  150.  
  151. PROCEDURE IsPrivateMessage (VAR internalId : ARRAY OF CHAR): BOOLEAN;
  152. (* Gibt zurck, ob die Message eine private oder eine
  153.  * ”ffentliche Nachricht ist. Der Parser muž das beim Abarbeiten
  154.  * des Logfiles wissen, um evtl. private Nachrichten noch
  155.  * einfgen zu k”nnen.
  156.  *)
  157.  
  158. PROCEDURE MsgHasCopys (REF internalId: ARRAY OF CHAR): BOOLEAN;
  159. (* Gibt zurck, ob die Nachricht Kopien hat oder nicht. 
  160.  * Wenn es keine private Nachricht ist, dann wird immer FALSE
  161.  * zurckgegeben
  162.  *)
  163.  
  164. PROCEDURE ChangeMessage (REF internalId : ARRAY OF CHAR): BOOLEAN;
  165. (* Wenn die Nachricht ein Kommentar oder eine Antwort ist, 
  166.  * dann wird daraus eine entsprechende Nachricht mit Wildwestverkettung
  167.  * erzeugt, damit die Maus die beim n„chsten Mal annimmt.
  168.  *)
  169.  
  170. PROCEDURE GetHdrInfos (REF internalId : ARRAY OF CHAR; 
  171.                        VAR refIdPtr, ToPtr, WegenPtr, ElinePtr,
  172.                            longRefIdPtr : ADDRESS);
  173. (* Gibt an den Parser die n”tigen Informationen zurck,
  174.  * um eine pers”nliche Nachricht einzufgen
  175.  *)
  176.  
  177. PROCEDURE GetMsgFileName (VAR name : ARRAY OF CHAR);
  178. (* Gibt an den Parser den Dateinamen zurck,
  179.  * unter dem die Nachricht gespeichert wurde, 
  180.  * ohne Extension
  181.  *)
  182.  
  183. PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
  184. (* L”scht eine Nachricht wieder.
  185.  *)
  186.  
  187. PROCEDURE InitMessages();
  188. (* Initialisiert die internen Strukturen des MessageManagers
  189.  *)
  190.  
  191. PROCEDURE SortMessages();
  192. (* Sortiert die Nachrichten intern richtig
  193.  *)
  194.  
  195. PROCEDURE WriteHdrInfo (VAR msg : msgInfo);
  196. (* Schreibt die Headerinformationen der Nachricht in die .HDR-Datei
  197.  *)
  198.  
  199. PROCEDURE ReadHdrInfo (VAR msg : msgInfo; externalRef: BOOLEAN);
  200. (* Liest die Headerinformationen aus der MSGxxx.HDR-Datei ein
  201.  * ExternalRef: msg ist keine Referenz auf dem msgArray.
  202.  *)
  203.  
  204. PROCEDURE ReadMessageInfo();
  205. (* Liest die MSGINFO.DAT ein
  206.  *)
  207.  
  208. PROCEDURE ReReadMessageInfo();
  209. (* Liest die MSGINFO.DAT erneut ein
  210.  *)
  211.  
  212. PROCEDURE WriteMessageInfo(doRedrawWdw: BOOLEAN);
  213. (* Schreibt die MSGINFO.DAT ein
  214.  *)
  215.  
  216. PROCEDURE MakeMausId (msg: msgInfo; VAR str : ARRAY OF CHAR); 
  217. (* Erzeugt eine ID, wie sie an die Maus geschickt wird. 
  218.  * Format: 
  219.  * CM###ddddd, ### ist die interne Messagenummer, 
  220.  * ddddd ist das Datum und die Zeit im 36er System
  221.  *)
  222.  
  223. PROCEDURE CreateMessage (minNum : INTEGER; REF To, OrgGroup, Group, RefId, Topic, RealName : ARRAY OF CHAR; 
  224.                          type : MessageType; copyTo : CARDINAL;
  225.                          REF crossLine : ARRAY OF CHAR; 
  226.                          REF oldMId : ARRAY OF CHAR;
  227.                          oldDist    : data.tDistribution;
  228.                          openEditor : BOOLEAN;
  229.                          VAR messIdx: INTEGER): BOOLEAN;
  230. (* Erzeugt eine neue Nachricht, Oberfunktion fr alle neuen Nachrichten
  231.  * Sollte nicht benutzt werden, nur fr interne Benutzung
  232.  *)
  233.  
  234. PROCEDURE deleteMessage (REF internalId : ARRAY OF CHAR; killEdit: BOOLEAN;
  235.                           changeState : BOOLEAN);
  236. (* L”scht eine Nachricht, schliežt ggf. die Editoren und ggf. Status von
  237.  * pers”nlicher Nachricht zurckstellen
  238.  *)
  239.  
  240. PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
  241. (* Nachricht mit dieser internen Id l”schen. Ruft selber deleteMessage auf
  242.  *)
  243.  
  244. TYPE msgInfoType = (itReceiver, itOrgGroup, itGroup, itRid, itTopic, itMid, itRName);
  245.  
  246. PROCEDURE MsgEditGetInfos (wdw: INTEGER; info: msgInfoType; VAR str: ARRAY OF CHAR);
  247. (* Gibt die gewnschten Infos zu dem Message-Editor wdw. Wenn die Information
  248.  * nicht vorhanden ist, dann wird ein leerer String geliefert
  249.  *)
  250.  
  251. PROCEDURE MsgEditorTop (wdw: INTEGER): BOOLEAN;
  252. (* Liefert zurck, ob gerade ein Message-Editor das Topwindow ist,
  253.  * also ein Editor, der diesem Modul bekannt ist
  254.  *)
  255.  
  256. (*$H+*)
  257. PROCEDURE openReference (idx: INTEGER);
  258. (* ™ffnet die Referenznachricht
  259.  *)
  260. (*$H=*)
  261.  
  262. PROCEDURE OpenEditor (VAR msg : msgInfo; new: BOOLEAN; num : INTEGER; 
  263.                       offset: INTEGER; forView: BOOLEAN); 
  264. (* ™ffnet einen CAT-Editor mit einer Nachricht drin
  265.  *)
  266.  
  267. PROCEDURE UpdateEditors (msg: msgInfo);
  268. (* Aktualisiert die mit der Nachricht verbundenen Infozeilen der Editoren 
  269.  *)
  270.  
  271. PROCEDURE SaveEditPos (VAR max: INTEGER);
  272. (* Sichert die Positionen der Editoren 
  273.  * Gibt die Anzahl der gesicherten Positionen zurck
  274.  *)
  275.  
  276. PROCEDURE CloseAllEditors (force: BOOLEAN): BOOLEAN;
  277. (* Schliežt alle Nachrichteneditoren
  278.  *)
  279.  
  280. PROCEDURE MsgAskForSave(); 
  281. (* Fragt fr alle offenen Editorfenster mit Nachrichten und
  282.  * ver„nderten Texten nach, ob diese noch gesichert werden sollen.
  283.  * Sollte vor dem Erstellen des Infiles aufgerufen werden.
  284.  *)
  285.  
  286. PROCEDURE ReloadEditors ();
  287. (* Aktualisiert nach dem Erstellen des Infiles alle 
  288.  * offenen Editorfenster
  289.  *)
  290.  
  291. PROCEDURE InitMessages ();
  292. (* Modul initialisieren. Kann auch wiederholt aufgerugen werden, 
  293.  * dann werden die Strukturen neu initialisiert
  294.  *)
  295.  
  296. END Messages.
  297.